home *** CD-ROM | disk | FTP | other *** search
/ Risc World 3 / Risc World 3.iso / SOFTWARE / ISSUE3 / PD / VICE / doc / vice_8 < prev    next >
Text File  |  2002-09-01  |  43KB  |  2,199 lines

  1. <HTML>
  2. <HEAD>
  3. <!-- This HTML file has been created by texi2html 1.52
  4.      from ../vice.texi on 31 August 2002 -->
  5.  
  6. <TITLE>VICE Manual - 8  Snapshots</TITLE>
  7. </HEAD>
  8. <BODY>
  9. Go to the <A HREF="vice_1.html">first</A>, <A HREF="vice_7.html">previous</A>, <A HREF="vice_9.html">next</A>, <A HREF="vice_16.html">last</A> section, <A HREF="vice_toc.html">table of contents</A>.
  10. <P><HR><P>
  11.  
  12.  
  13. <H1><A NAME="SEC106" HREF="vice_toc.html#TOC106">8  Snapshots</A></H1>
  14.  
  15. <P>
  16. Every VICE emulator has a built-in snapshot feature, that saves the
  17. complete emulator state into one file for later use.
  18. You can therefore save the emulator state - including the state of
  19. the game you are playing for example - in a single file. 
  20.  
  21. </P>
  22.  
  23.  
  24.  
  25. <H2><A NAME="SEC107" HREF="vice_toc.html#TOC107">8.1  Snapshot usage</A></H2>
  26.  
  27. <P>
  28. A snapshot is one file containining the complete emulator state.  A
  29. snapshot file can be generated by selecting the "Save snapshot"
  30. command at any time.  This will pop up a requester from which you can
  31. specify whether the snapshot should also contain the disk and ROM
  32. status.
  33.  
  34. </P>
  35. <P>
  36. A snapshot file can be used to restore the emulator state by selecting
  37. the <CODE>load snapshot</CODE> menu entry at any time.
  38. Unfortunately attached ROM images/cartridges are only supported in the VIC20,
  39. the PET and the CBM-II emulators at this time.
  40.  
  41. </P>
  42. <P>
  43. The memory configuration of the emulator is saved in the snapshot file as
  44. well. This configuration is restored when the snapshot is loaded.
  45.  
  46. </P>
  47. <P>
  48. A quick snapshot can now be made by pressing the <CODE>M-F11</CODE> key and
  49. reloaded by pressing the <CODE>M-F10</CODE> key. 
  50.  
  51. </P>
  52.  
  53.  
  54. <H2><A NAME="SEC108" HREF="vice_toc.html#TOC108">8.2  Snapshot format</A></H2>
  55.  
  56. <P>
  57. A snapshot file consists of several modules of mostly different types.
  58. Each module has a name and saves the state of an entity like a CIA, the CPU, 
  59. or the memory.
  60.  
  61. </P>
  62.  
  63.  
  64.  
  65. <H3><A NAME="SEC109" HREF="vice_toc.html#TOC109">8.2.1  Emulator modules</A></H3>
  66.  
  67. <P>
  68. This section lists the modules that are contained in each of the
  69. emulators snapshot files.
  70.  
  71. </P>
  72.  
  73.  
  74.  
  75. <H4><A NAME="SEC110" HREF="vice_toc.html#TOC110">8.2.1.1  x64 modules</A></H4>
  76.  
  77. <P>
  78. The modules in the x64 emulator are:
  79.  
  80. </P>
  81. <TABLE BORDER>
  82.  
  83. <TR><TD>Name</TD>
  84.  
  85. <TD>Type</TD>
  86. <TD>Description</TD>
  87. </TR>
  88. <TR><TD>MAINCPU</TD>
  89.  
  90. <TD>6502</TD>
  91. <TD>The Main CPU - although it is a 6510, only the 6502 core is saved here</TD>
  92. </TR>
  93. <TR><TD>C64MEM</TD>
  94.  
  95. <TD>Memory</TD>
  96. <TD>Holds the RAM contents of the C64.  Also the CPU I/O register contents are saved here.</TD>
  97. </TR>
  98. <TR><TD>C64ROM</TD>
  99.  
  100. <TD>ROM images</TD>
  101. <TD>Dump of the system ROMs</TD>
  102. </TR>
  103. <TR><TD>VIC-II</TD>
  104.  
  105. <TD>656*</TD>
  106. <TD>The VIC-II of the C64/128</TD>
  107. </TR>
  108. <TR><TD>CIA1</TD>
  109.  
  110. <TD>6526</TD>
  111. <TD>The CIA for the interrupts and the keyboard</TD>
  112. </TR>
  113. <TR><TD>CIA2</TD>
  114.  
  115. <TD>6526</TD>
  116. <TD>The CIA for the userport, IEC-bus and RS232.</TD>
  117. </TR>
  118. <TR><TD>SID</TD>
  119.  
  120. <TD>6581</TD>
  121. <TD>The SID sound chip of the C64/C128</TD>
  122. </TR>
  123. <TR><TD>REU*</TD>
  124.  
  125. <TD></TD>
  126. <TD>The RAM Extension Unit state (optional)</TD>
  127. </TR>
  128. <TR><TD>ACIA1</TD>
  129.  
  130. <TD>6551</TD>
  131. <TD>An ACIA (RS232 interface) at $DE00 (optional)</TD>
  132. </TR>
  133. <TR><TD>TPI</TD>
  134.  
  135. <TD>6525</TD>
  136. <TD>A TPI at $DF00 for a parallel IEEE488 interface (optional)</TD>
  137. </TR>
  138. <TR><TD>*</TD>
  139.  
  140. <TD>Drive modules</TD>
  141. <TD>The emulated drive(s) have their own modules see section <A HREF="vice_8.html#SEC115">8.2.1.6  Drive modules</A></TD>
  142. </TR></TABLE>
  143.  
  144. <P>
  145. Some of the modules are optional and are only saved if the specific
  146. feature is enabled at save-time.  If the module is found when restoring
  147. the state the optional features are enabled, and disabled otherwise.
  148.  
  149. </P>
  150.  
  151.  
  152. <H4><A NAME="SEC111" HREF="vice_toc.html#TOC111">8.2.1.2  x128 modules</A></H4>
  153.  
  154. <P>
  155. The modules in the x128 emulator are:
  156.  
  157. </P>
  158. <TABLE BORDER>
  159.  
  160. <TR><TD>Name</TD>
  161.  
  162. <TD>Type</TD>
  163. <TD>Description</TD>
  164. </TR>
  165. <TR><TD>MAINCPU</TD>
  166.  
  167. <TD>6502</TD>
  168. <TD>The Main CPU - although it is a 6510, only the 6502 core is saved here</TD>
  169. </TR>
  170. <TR><TD>C128MEM</TD>
  171.  
  172. <TD>Memory</TD>
  173. <TD>Holds the RAM contents of the C64.  Also the CPU I/O register contents are saved here.</TD>
  174. </TR>
  175. <TR><TD>C128ROM</TD>
  176.  
  177. <TD>ROM images</TD>
  178. <TD>Dump of the system ROMs</TD>
  179. </TR>
  180. <TR><TD>VIC-II</TD>
  181.  
  182. <TD>656*</TD>
  183. <TD>The VIC-II of the C64/128</TD>
  184. </TR>
  185. <TR><TD>CIA1</TD>
  186.  
  187. <TD>6526</TD>
  188. <TD>The CIA for the interrupts and the keyboard</TD>
  189. </TR>
  190. <TR><TD>CIA2</TD>
  191.  
  192. <TD>6526</TD>
  193. <TD>The CIA for the userport, IEC-bus and RS232.</TD>
  194. </TR>
  195. <TR><TD>SID</TD>
  196.  
  197. <TD>6581</TD>
  198. <TD>The SID sound chip of the C64/C128</TD>
  199. </TR>
  200. <TR><TD>ACIA1</TD>
  201.  
  202. <TD>6551</TD>
  203. <TD>An ACIA at $DE00 (optional)</TD>
  204. </TR>
  205. <TR><TD>TPI</TD>
  206.  
  207. <TD>6525</TD>
  208. <TD>A TPI at $DF00 for a parallel IEEE488 interface (optional)</TD>
  209. </TR>
  210. <TR><TD>*</TD>
  211.  
  212. <TD>Drive modules</TD>
  213. <TD>The emulated drive(s) have their own modules see section <A HREF="vice_8.html#SEC115">8.2.1.6  Drive modules</A></TD>
  214. </TR></TABLE>
  215.  
  216. <P>
  217. Some of the modules are optional and are only saved if the specific
  218. feature is enabled at save-time.  If the module is found when restoring
  219. the state the optional features are enabled, and disabled otherwise.
  220.  
  221. </P>
  222. <P>
  223. Not yet supported are the 80 column video chip, cartridges and 
  224. RAM expansion unit.
  225.  
  226. </P>
  227.  
  228.  
  229. <H4><A NAME="SEC112" HREF="vice_toc.html#TOC112">8.2.1.3  xvic modules</A></H4>
  230.  
  231. <P>
  232. The modules in the xvic emulator are:
  233.  
  234. </P>
  235. <TABLE BORDER>
  236.  
  237. <TR><TD>Name</TD>
  238.  
  239. <TD>Type</TD>
  240. <TD>Description</TD>
  241. </TR>
  242. <TR><TD>MAINCPU</TD>
  243.  
  244. <TD>6502</TD>
  245. <TD>The Main CPU </TD>
  246. </TR>
  247. <TR><TD>VIC20MEM</TD>
  248.  
  249. <TD>Memory</TD>
  250. <TD>Holds the RAM contents of the VIC20.</TD>
  251. </TR>
  252. <TR><TD>VIC20ROM</TD>
  253.  
  254. <TD>ROM images</TD>
  255. <TD>Holds the ROM images of the VIC20, including possibly attached cartridges</TD>
  256. </TR>
  257. <TR><TD>VIC-I</TD>
  258.  
  259. <TD>656*</TD>
  260. <TD>The VIC-I of the VIC20</TD>
  261. </TR>
  262. <TR><TD>VIA1</TD>
  263.  
  264. <TD>6522</TD>
  265. <TD>The VIA for the interrupts and the keyboard</TD>
  266. </TR>
  267. <TR><TD>VIA2</TD>
  268.  
  269. <TD>6522</TD>
  270. <TD>The VIA for the userport, IEC-bus and RS232.</TD>
  271. </TR>
  272. <TR><TD>*</TD>
  273.  
  274. <TD>Drive modules</TD>
  275. <TD>The emulated drive(s) have their own modules see section <A HREF="vice_8.html#SEC115">8.2.1.6  Drive modules</A></TD>
  276. </TR></TABLE>
  277.  
  278.  
  279.  
  280. <H4><A NAME="SEC113" HREF="vice_toc.html#TOC113">8.2.1.4  xpet modules</A></H4>
  281.  
  282. <P>
  283. The modules in the xpet emulator are:
  284.  
  285. </P>
  286. <TABLE BORDER>
  287.  
  288. <TR><TD>Name</TD>
  289.  
  290. <TD>Type</TD>
  291. <TD>Description</TD>
  292. </TR>
  293. <TR><TD>MAINCPU</TD>
  294.  
  295. <TD>6502</TD>
  296. <TD>The Main CPU </TD>
  297. </TR>
  298. <TR><TD>PETMEM</TD>
  299.  
  300. <TD>Memory</TD>
  301. <TD>Holds the RAM contents of the PET.</TD>
  302. </TR>
  303. <TR><TD>PETROM</TD>
  304.  
  305. <TD>ROM images</TD>
  306. <TD>Holds the ROM images of the PET, including possibly attached cartridges</TD>
  307. </TR>
  308. <TR><TD>CRTC</TD>
  309.  
  310. <TD>6545</TD>
  311. <TD>The CRTC of the PET. This is also included if it is a dump of a PET without CRTC, because the video state is saved here anyway.</TD>
  312. </TR>
  313. <TR><TD>PIA1</TD>
  314.  
  315. <TD>6520</TD>
  316. <TD>The PIA for the interrupts, tape and the keyboard</TD>
  317. </TR>
  318. <TR><TD>PIA2</TD>
  319.  
  320. <TD>6520</TD>
  321. <TD>The PIA for the IEEE488-bus</TD>
  322. </TR>
  323. <TR><TD>VIA</TD>
  324.  
  325. <TD>6522</TD>
  326. <TD>The VIA for IEEE488, userport, sound</TD>
  327. </TR>
  328. <TR><TD>ACIA1</TD>
  329.  
  330. <TD>6551</TD>
  331. <TD>The ACIA for the SuperPET.  This module is optional.</TD>
  332. </TR>
  333. <TR><TD>*</TD>
  334.  
  335. <TD>Drive modules</TD>
  336. <TD>The emulated drive(s) have their own modules see section <A HREF="vice_8.html#SEC115">8.2.1.6  Drive modules</A></TD>
  337. </TR></TABLE>
  338.  
  339.  
  340.  
  341. <H4><A NAME="SEC114" HREF="vice_toc.html#TOC114">8.2.1.5  xcbm2 modules</A></H4>
  342.  
  343. <P>
  344. The modules in the xcbm2 emulator are:
  345.  
  346. </P>
  347. <TABLE BORDER>
  348.  
  349. <TR><TD>Name</TD>
  350.  
  351. <TD>Type</TD>
  352. <TD>Description</TD>
  353. </TR>
  354. <TR><TD>MAINCPU</TD>
  355.  
  356. <TD>6502</TD>
  357. <TD>The Main CPU - although it is a 6509, only the 6502 core is saved here</TD>
  358. </TR>
  359. <TR><TD>CBM2MEM</TD>
  360.  
  361. <TD>Memory</TD>
  362. <TD>Holds the RAM contents of the CBM-II models.  Also holds the exec-bank and indirection bank registers</TD>
  363. </TR>
  364. <TR><TD>C500DATA</TD>
  365.  
  366. <TD></TD>
  367. <TD>Holds additional state information necessary for the C500 (e.g. cycles till the next IRQ)</TD>
  368. </TR>
  369. <TR><TD>CBM2ROM</TD>
  370.  
  371. <TD>Memory</TD>
  372. <TD>optional.  Holds the ROM images.</TD>
  373. </TR>
  374. <TR><TD>CRTC</TD>
  375.  
  376. <TD>6545</TD>
  377. <TD>The video chip for the C6*0 and C7*0 models (only those models).</TD>
  378. </TR>
  379. <TR><TD>VIC-II</TD>
  380.  
  381. <TD>656?</TD>
  382. <TD>The video chip for the C5*0 models (only the C5*0 models).</TD>
  383. </TR>
  384. <TR><TD>CIA1</TD>
  385.  
  386. <TD>6526</TD>
  387. <TD>The CIA for IEEE 488 and userport.</TD>
  388. </TR>
  389. <TR><TD>TPI1</TD>
  390.  
  391. <TD>6525</TD>
  392. <TD>TPI 1 for IEEE488</TD>
  393. </TR>
  394. <TR><TD>TPI2</TD>
  395.  
  396. <TD>6525</TD>
  397. <TD>TPI 2 for interrupts and keyboard.</TD>
  398. </TR>
  399. <TR><TD>ACIA1</TD>
  400.  
  401. <TD>6551</TD>
  402. <TD>The RS232 interface</TD>
  403. </TR>
  404. <TR><TD>SID</TD>
  405.  
  406. <TD>6581</TD>
  407. <TD>The CBM2s SID sound chip</TD>
  408. </TR>
  409. <TR><TD>*</TD>
  410.  
  411. <TD>Drive modules</TD>
  412. <TD>The emulated drive(s) have their own modules see section <A HREF="vice_8.html#SEC115">8.2.1.6  Drive modules</A></TD>
  413. </TR></TABLE>
  414.  
  415. <P>
  416. The snapshot either contains CRTC or VIC-II snapshot modules, but
  417. not both. Currently switching between the two video emulations is not
  418. possible at runtime, so only snapshots that fit the current UseVicII 
  419. resource are accepted.
  420.  
  421. </P>
  422.  
  423.  
  424. <H4><A NAME="SEC115" HREF="vice_toc.html#TOC115">8.2.1.6  Drive modules</A></H4>
  425.  
  426. <P>
  427. The modules for the real disk drive emulation are included in the emulator
  428. when the emulation is enabled during the writing of the snapshot.
  429.  
  430. </P>
  431. <TABLE BORDER>
  432.  
  433. <TR><TD>Name</TD>
  434.  
  435. <TD>Type</TD>
  436. <TD>Description</TD>
  437. </TR>
  438. <TR><TD>*CPU</TD>
  439.  
  440. <TD>6502</TD>
  441. <TD>The Drive 0 CPU</TD>
  442. </TR>
  443. <TR><TD>*</TD>
  444.  
  445. <TD>*</TD>
  446. <TD>*</TD>
  447. </TR></TABLE>
  448.  
  449.  
  450.  
  451. <H3><A NAME="SEC116" HREF="vice_toc.html#TOC116">8.2.2  Module formats</A></H3>
  452.  
  453. <P>
  454. This section shows the basic module framework and the contents of the
  455. different types of modules.
  456.  
  457. </P>
  458. <P>
  459. The single chip modules contain the <B>chip</B> state, not the state of the
  460. emulator.  We tried to make the format as implementation-independent as
  461. possible, to allow reuse of snapshots in later versions of this
  462. emulator, or even in other emulators.
  463.  
  464. </P>
  465.  
  466.  
  467.  
  468. <H4><A NAME="SEC117" HREF="vice_toc.html#TOC117">8.2.2.1  Terminology</A></H4>
  469.  
  470. <P>
  471. In this section we use certain abbreviations to define the types of the
  472. data saved in the snapshot.
  473.  
  474. </P>
  475. <DL COMPACT>
  476.  
  477. <DT><CODE>BYTE</CODE>
  478. <DD>
  479. 8 bit integer.
  480. <DT><CODE>WORD</CODE>
  481. <DD>
  482. 16 bit integer.  Saved with low-byte first, high-byte last.
  483. <DT><CODE>DWORD</CODE>
  484. <DD>
  485. 32 bit integer.  Saved with low-word first, then high-word.  Each word saved with its low-byte first.
  486. <DT><CODE>ARRAY</CODE>
  487. <DD>
  488. Array of BYTE values.  Length depends on the description.
  489. </DL>
  490.  
  491. <P>
  492. The tables for the single modules state the type, name and description
  493. of the data saved in the modules.  The data is saved in the order it is
  494. in the tables, so no offset is given.
  495.  
  496. </P>
  497.  
  498.  
  499. <H4><A NAME="SEC118" HREF="vice_toc.html#TOC118">8.2.2.2  Module framework</A></H4>
  500.  
  501. <P>
  502. The VICE snapshot file starts with the magic string and includes the
  503. fileformat version number.
  504.  
  505. </P>
  506. <TABLE BORDER>
  507.  
  508. <TR><TD>Type</TD>
  509.  
  510. <TD>Name</TD>
  511. <TD>Description</TD>
  512. </TR>
  513. <TR><TD>19 BYTE</TD>
  514.  
  515. <TD>MAGIC</TD>
  516. <TD>"VICE Snapshot File\032", padded with 0</TD>
  517. </TR>
  518. <TR><TD>BYTE</TD>
  519.  
  520. <TD>VMAJOR</TD>
  521. <TD>fileformat major version number</TD>
  522. </TR>
  523. <TR><TD>BYTE</TD>
  524.  
  525. <TD>VMINOR</TD>
  526. <TD>fileformat minor version number</TD>
  527. </TR>
  528. <TR><TD>16 BYTE</TD>
  529.  
  530. <TD>MACHINENAME</TD>
  531. <TD>Name of emulated machine, like "PET", "CBM-II", "VIC20", "C64" or "C128". zerobyte-padded.</TD>
  532. </TR></TABLE>
  533.  
  534. <P>
  535. The file header is followed by a number of different snapshot modules.
  536.  
  537. </P>
  538. <P>
  539. Each module has a header with the information given in the table below.
  540. The header includes two version numbers, VMAJOR and VMINOR.  Modules
  541. with the same VMAJOR should be able to be exchanged.  I.e. higher VMINOR
  542. numbers only append to the data for lower VMINOR.  This additional data
  543. is ignored by older restore routines.  The other way around newer
  544. restore routines must accept the fewer info from lower VMINOR dumps.
  545. Changes in VMAJOR might introduce any incompatibility you like, but
  546. that's what VMAJOR is for after all :-)
  547.  
  548. </P>
  549. <TABLE BORDER>
  550.  
  551. <TR><TD>Type</TD>
  552.  
  553. <TD>Name</TD>
  554. <TD>Description</TD>
  555. </TR>
  556. <TR><TD>16 BYTE</TD>
  557.  
  558. <TD>MODULENAME</TD>
  559. <TD>The name of the module in ASCII, padded with 0 to 16 byte.</TD>
  560. </TR>
  561. <TR><TD>BYTE</TD>
  562.  
  563. <TD>VMAJOR</TD>
  564. <TD>major version number</TD>
  565. </TR>
  566. <TR><TD>BYTE</TD>
  567.  
  568. <TD>VMINOR</TD>
  569. <TD>minor version number</TD>
  570. </TR>
  571. <TR><TD>DWORD</TD>
  572.  
  573. <TD>SIZE</TD>
  574. <TD>size of the module, including this header</TD>
  575. </TR></TABLE>
  576.  
  577.  
  578.  
  579. <H4><A NAME="SEC119" HREF="vice_toc.html#TOC119">8.2.2.3  CPU module</A></H4>
  580.  
  581. <P>
  582. This module saves the core 6502 state.  You will find a clock value
  583. there.  All other modules save their own clock values relative to this
  584. value.  However, the drive modules save their clocks relative to their
  585. appropriate CPUs of course.
  586.  
  587. </P>
  588. <P>
  589. <B>Warning:</B> This module is still under construction and saves some
  590. information that is not sure to be VICE-independent.  If in doubt, read
  591. the source.
  592.  
  593. </P>
  594. <TABLE BORDER>
  595.  
  596. <TR><TD>Type</TD>
  597.  
  598. <TD>Name</TD>
  599. <TD>Description</TD>
  600. </TR>
  601. <TR><TD>DWORD</TD>
  602.  
  603. <TD>CLK</TD>
  604. <TD>the current CPU clock value.  All other clock values are relative to this.</TD>
  605. </TR>
  606. <TR><TD>BYTE</TD>
  607.  
  608. <TD>AC</TD>
  609. <TD>Accumulator</TD>
  610. </TR>
  611. <TR><TD>BYTE</TD>
  612.  
  613. <TD>XR</TD>
  614. <TD>X index register</TD>
  615. </TR>
  616. <TR><TD>BYTE</TD>
  617.  
  618. <TD>YR</TD>
  619. <TD>Y index register</TD>
  620. </TR>
  621. <TR><TD>BYTE</TD>
  622.  
  623. <TD>SP</TD>
  624. <TD>Stack Pointer</TD>
  625. </TR>
  626. <TR><TD>WORD</TD>
  627.  
  628. <TD>PC</TD>
  629. <TD>Programm Counter</TD>
  630. </TR>
  631. <TR><TD>BYTE</TD>
  632.  
  633. <TD>ST</TD>
  634. <TD>Status Registers</TD>
  635. </TR>
  636. <TR><TD>DWORD</TD>
  637.  
  638. <TD>LASTOPCODE</TD>
  639. <TD>?</TD>
  640. </TR>
  641. <TR><TD>DWORD</TD>
  642.  
  643. <TD>IRQCLK</TD>
  644. <TD>absolute CLK when the IRQ line came active</TD>
  645. </TR>
  646. <TR><TD>DOWRD</TD>
  647.  
  648. <TD>NMICLK</TD>
  649. <TD>absolute CLK when the NMI line came active</TD>
  650. </TR>
  651. <TR><TD>DWORD</TD>
  652.  
  653. <TD>?</TD>
  654. <TD>?</TD>
  655. </TR>
  656. <TR><TD>DWORD</TD>
  657.  
  658. <TD>?</TD>
  659. <TD>?</TD>
  660. </TR></TABLE>
  661.  
  662.  
  663.  
  664. <H4><A NAME="SEC120" HREF="vice_toc.html#TOC120">8.2.2.4  CIA module</A></H4>
  665.  
  666. <P>
  667. The CIA 6526 is an I/O port chip with 2 8-bit I/O ports, a shift register,
  668. two timers, a Time of Day clock and interrupts.
  669.  
  670. </P>
  671. <P>
  672. Version numbers: Major 1, Minor 1.
  673.  
  674. </P>
  675. <TABLE BORDER>
  676.  
  677. <TR><TD>Type</TD>
  678.  
  679. <TD>Name</TD>
  680. <TD>Description</TD>
  681. </TR>
  682. <TR><TD>BYTE</TD>
  683.  
  684. <TD>ORA</TD>
  685. <TD>Output register A</TD>
  686. </TR>
  687. <TR><TD>BYTE</TD>
  688.  
  689. <TD>ORB</TD>
  690. <TD>Output register B</TD>
  691. </TR>
  692. <TR><TD>BYTE</TD>
  693.  
  694. <TD>DDRA</TD>
  695. <TD>Data direction register A</TD>
  696. </TR>
  697. <TR><TD>BYTE</TD>
  698.  
  699. <TD>DDRB</TD>
  700. <TD>Data direction register B</TD>
  701. </TR>
  702. <TR><TD>WORD</TD>
  703.  
  704. <TD>TAC</TD>
  705. <TD>Timer A counter value</TD>
  706. </TR>
  707. <TR><TD>WORD</TD>
  708.  
  709. <TD>TBC</TD>
  710. <TD>Timer B counter value</TD>
  711. </TR>
  712. <TR><TD>BYTE</TD>
  713.  
  714. <TD>TOD_TEN</TD>
  715. <TD>Time of Day - current tenth of second</TD>
  716. </TR>
  717. <TR><TD>BYTE</TD>
  718.  
  719. <TD>TOD_SEC</TD>
  720. <TD>Time of Day - current seconds</TD>
  721. </TR>
  722. <TR><TD>BYTE</TD>
  723.  
  724. <TD>TOD_MIN</TD>
  725. <TD>Time of Day - current minutes</TD>
  726. </TR>
  727. <TR><TD>BYTE</TD>
  728.  
  729. <TD>TOD_HR</TD>
  730. <TD>Time of Day - current hours</TD>
  731. </TR>
  732. <TR><TD>BYTE</TD>
  733.  
  734. <TD>SDR</TD>
  735. <TD>contents of shift register</TD>
  736. </TR>
  737. <TR><TD>BYTE</TD>
  738.  
  739. <TD>IER</TD>
  740. <TD>mask of enabled interrupt masks</TD>
  741. </TR>
  742. <TR><TD>BYTE</TD>
  743.  
  744. <TD>CRA</TD>
  745. <TD>Control register A</TD>
  746. </TR>
  747. <TR><TD>BYTE</TD>
  748.  
  749. <TD>CRB</TD>
  750. <TD>Control register B</TD>
  751. </TR>
  752. <TR><TD>WORD</TD>
  753.  
  754. <TD>TAL</TD>
  755. <TD>Timer A latch value</TD>
  756. </TR>
  757. <TR><TD>WORD</TD>
  758.  
  759. <TD>TBL</TD>
  760. <TD>Timer B latch value</TD>
  761. </TR>
  762. <TR><TD>BYTE</TD>
  763.  
  764. <TD>IFR</TD>
  765. <TD>mask of currently active interrupts</TD>
  766. </TR>
  767. <TR><TD>BYTE</TD>
  768.  
  769. <TD>PBSTATE</TD>
  770. <TD>Bit 6/7 reflect the PB6/7 toggle bit state.  Bit 2/3 reflect the corresponding port bit state.</TD>
  771. </TR>
  772. <TR><TD>BYTE</TD>
  773.  
  774. <TD>SRHBITS</TD>
  775. <TD>number of half-bits to still shift in/out SDR</TD>
  776. </TR>
  777. <TR><TD>BYTE</TD>
  778.  
  779. <TD>ALARM_TEN</TD>
  780. <TD>Time of Day - alarm tenth of second</TD>
  781. </TR>
  782. <TR><TD>BYTE</TD>
  783.  
  784. <TD>ALARM_SEC</TD>
  785. <TD>Time of Day - alarm seconds</TD>
  786. </TR>
  787. <TR><TD>BYTE</TD>
  788.  
  789. <TD>ALARM_MIN</TD>
  790. <TD>Time of Day - alarm minutes</TD>
  791. </TR>
  792. <TR><TD>BYTE</TD>
  793.  
  794. <TD>ALARM_HR</TD>
  795. <TD>Time of Day - alarm hours</TD>
  796. </TR>
  797. <TR><TD>BYTE</TD>
  798.  
  799. <TD>READICR</TD>
  800. <TD>current clock minus the clock when ICR was read last plus 128.</TD>
  801. </TR>
  802. <TR><TD>BYTE</TD>
  803.  
  804. <TD>TODLATCHED</TD>
  805. <TD>Bit 0: 1= latched for reading, Bit 1: 2=stopped for writing</TD>
  806. </TR>
  807. <TR><TD>BYTE</TD>
  808.  
  809. <TD>TODL_TEN</TD>
  810. <TD>Time of Day - latched tenth of second</TD>
  811. </TR>
  812. <TR><TD>BYTE</TD>
  813.  
  814. <TD>TODL_SEC</TD>
  815. <TD>Time of Day - latched seconds</TD>
  816. </TR>
  817. <TR><TD>BYTE</TD>
  818.  
  819. <TD>TODL_MIN</TD>
  820. <TD>Time of Day - latched minutes</TD>
  821. </TR>
  822. <TR><TD>BYTE</TD>
  823.  
  824. <TD>TODL_HR</TD>
  825. <TD>Time of Day - latched hours</TD>
  826. </TR>
  827. <TR><TD>DWORD</TD>
  828.  
  829. <TD>TOD_TICKS</TD>
  830. <TD>clk ticks till next tenth of second</TD>
  831. </TR>
  832. <TR><TD>--</TD>
  833.  
  834. <TD>--</TD>
  835. <TD>The next items have been added in V1.1</TD>
  836. </TR>
  837. <TR><TD>WORD</TD>
  838.  
  839. <TD>TASTATE</TD>
  840. <TD>The state bits of the CIA timer A, according to ciatimer.h</TD>
  841. </TR>
  842. <TR><TD>WORD</TD>
  843.  
  844. <TD>TBSTATE</TD>
  845. <TD>The state bits of the CIA timer B, according to ciatimer.h</TD>
  846. </TR></TABLE>
  847.  
  848. <P>
  849. The last two items have been added in CIA snapshot version 1.1 due
  850. to the improved CIA emulation in the newer VICE versions. 
  851. Some state bits correspond to the CIA state as described in the
  852. "A Software Model of the CIA 6526" document by Wolfgang Lorenz,
  853. some are delayed versions. For more read the source file 
  854. <CODE>ciatimer.h</CODE>.
  855.  
  856. </P>
  857.  
  858.  
  859. <H4><A NAME="SEC121" HREF="vice_toc.html#TOC121">8.2.2.5  VIA module</A></H4>
  860.  
  861. <P>
  862. The VIA 6522 is the predecessor of the CIA and also an I/O port chip
  863. with 2 8-bit I/O ports, a shift register,
  864. two timers and interrupts.
  865.  
  866. </P>
  867. <P>
  868. Version numbers: Major 1, Minor 0.
  869.  
  870. </P>
  871. <TABLE BORDER>
  872.  
  873. <TR><TD>Type</TD>
  874.  
  875. <TD>Name</TD>
  876. <TD>Description</TD>
  877. </TR>
  878. <TR><TD>BYTE</TD>
  879.  
  880. <TD>ORA</TD>
  881. <TD>Output register A</TD>
  882. </TR>
  883. <TR><TD>BYTE</TD>
  884.  
  885. <TD>DDRA</TD>
  886. <TD>Data direction register A</TD>
  887. </TR>
  888. <TR><TD>BYTE</TD>
  889.  
  890. <TD>ORB</TD>
  891. <TD>Output register B</TD>
  892. </TR>
  893. <TR><TD>BYTE</TD>
  894.  
  895. <TD>DDRB</TD>
  896. <TD>Data direction register B</TD>
  897. </TR>
  898. <TR><TD>WORD</TD>
  899.  
  900. <TD>T1L</TD>
  901. <TD>Timer 1 Latch value</TD>
  902. </TR>
  903. <TR><TD>WORD</TD>
  904.  
  905. <TD>T1C</TD>
  906. <TD>Timer 1 counter value</TD>
  907. </TR>
  908. <TR><TD>BYTE</TD>
  909.  
  910. <TD>T2L</TD>
  911. <TD>Timer 2 latch (8 bit as only lower byte is used)</TD>
  912. </TR>
  913. <TR><TD>WORD</TD>
  914.  
  915. <TD>T2C</TD>
  916. <TD>Timer 2 counter value</TD>
  917. </TR>
  918. <TR><TD>BYTE</TD>
  919.  
  920. <TD>RUNFL</TD>
  921. <TD>bit 7: timer 1 will generate IRQ on underflow; bit 6: timer 2 will generate IRQ on underflow</TD>
  922. </TR>
  923. <TR><TD>BYTE</TD>
  924.  
  925. <TD>SR</TD>
  926. <TD>Shift register value</TD>
  927. </TR>
  928. <TR><TD>BYTE</TD>
  929.  
  930. <TD>ACR</TD>
  931. <TD>Auxiliary control register</TD>
  932. </TR>
  933. <TR><TD>BYTE</TD>
  934.  
  935. <TD>PCR</TD>
  936. <TD>Peripheral control register</TD>
  937. </TR>
  938. <TR><TD>BYTE</TD>
  939.  
  940. <TD>IFR</TD>
  941. <TD>active interrupts</TD>
  942. </TR>
  943. <TR><TD>BYTE</TD>
  944.  
  945. <TD>IER</TD>
  946. <TD>interrupt mask</TD>
  947. </TR>
  948. <TR><TD>BYTE</TD>
  949.  
  950. <TD>PB7</TD>
  951. <TD>bit 7 = pb7 state</TD>
  952. </TR>
  953. <TR><TD>BYTE</TD>
  954.  
  955. <TD>SRHBITS</TD>
  956. <TD>number of half-bits to shift out on SR</TD>
  957. </TR>
  958. <TR><TD>BYTE</TD>
  959.  
  960. <TD>CABSTATE</TD>
  961. <TD>bit 7: state of CA2 pin, bit 6: state of CB2 pin</TD>
  962. </TR>
  963. <TR><TD>BYTE</TD>
  964.  
  965. <TD>ILA</TD>
  966. <TD>Port A Input Latch (see ACR bit 0)</TD>
  967. </TR>
  968. <TR><TD>BYTE</TD>
  969.  
  970. <TD>ILB</TD>
  971. <TD>Port B Input Latch (see ACR bit 1)</TD>
  972. </TR></TABLE>
  973.  
  974.  
  975.  
  976. <H4><A NAME="SEC122" HREF="vice_toc.html#TOC122">8.2.2.6  PIA module</A></H4>
  977.  
  978. <P>
  979. The PIA 6520 is a chip with two I/O ports (Parallel Interface Adapter)
  980. and four additional handshake lines.  The chip is pretty the same for
  981. Port A and B, only that Port A implements handshake on read operation
  982. and port B on write operation.
  983.  
  984. </P>
  985. <P>
  986. Version numbers: Major 1, Minor 0.
  987.  
  988. </P>
  989. <TABLE BORDER>
  990.  
  991. <TR><TD>Type</TD>
  992.  
  993. <TD>Name</TD>
  994. <TD>Description</TD>
  995. </TR>
  996. <TR><TD>UBYTE</TD>
  997.  
  998. <TD>ORA</TD>
  999. <TD>Output register A</TD>
  1000. </TR>
  1001. <TR><TD>UBYTE</TD>
  1002.  
  1003. <TD>DDRA</TD>
  1004. <TD>Data Direction Register A</TD>
  1005. </TR>
  1006. <TR><TD>UBYTE</TD>
  1007.  
  1008. <TD>CTRLA</TD>
  1009. <TD>Control Register A</TD>
  1010. </TR>
  1011. <TR><TD>UBYTE</TD>
  1012.  
  1013. <TD>ORB</TD>
  1014. <TD>Output register B</TD>
  1015. </TR>
  1016. <TR><TD>UBYTE</TD>
  1017.  
  1018. <TD>DDRB</TD>
  1019. <TD>Data Direction Register B</TD>
  1020. </TR>
  1021. <TR><TD>UBYTE</TD>
  1022.  
  1023. <TD>CTRLB</TD>
  1024. <TD>Control Register B</TD>
  1025. </TR>
  1026. <TR><TD>UBYTE</TD>
  1027.  
  1028. <TD>CABSTATE</TD>
  1029. <TD>Bit 7 = state of CA2, Bit 6 = state of CB2</TD>
  1030. </TR></TABLE>
  1031.  
  1032.  
  1033.  
  1034. <H4><A NAME="SEC123" HREF="vice_toc.html#TOC123">8.2.2.7  TPI module</A></H4>
  1035.  
  1036. <P>
  1037. The TPI 6525 is a chip with three I/O ports (Tri-Port-Interface).  One of
  1038. the ports can double as an interrupt prioritizer.  Therefore we also have
  1039. to save the states of the interrupt stack etc.
  1040.  
  1041. </P>
  1042. <P>
  1043. Version numbers: Major 1, Minor 0.
  1044.  
  1045. </P>
  1046. <TABLE BORDER>
  1047.  
  1048. <TR><TD>Type</TD>
  1049.  
  1050. <TD>Name</TD>
  1051. <TD>Description</TD>
  1052. </TR>
  1053. <TR><TD>BYTE</TD>
  1054.  
  1055. <TD>PRA</TD>
  1056. <TD>Port A output register</TD>
  1057. </TR>
  1058. <TR><TD>BYTE</TD>
  1059.  
  1060. <TD>PRB</TD>
  1061. <TD>Port B output register</TD>
  1062. </TR>
  1063. <TR><TD>BYTE</TD>
  1064.  
  1065. <TD>PRC</TD>
  1066. <TD>Port C output register (doubles as IRQ latch register)</TD>
  1067. </TR>
  1068. <TR><TD>BYTE</TD>
  1069.  
  1070. <TD>DDRA</TD>
  1071. <TD>Port A data direction register</TD>
  1072. </TR>
  1073. <TR><TD>BYTE</TD>
  1074.  
  1075. <TD>DDRB</TD>
  1076. <TD>Port B data direction register</TD>
  1077. </TR>
  1078. <TR><TD>BYTE</TD>
  1079.  
  1080. <TD>DDRC</TD>
  1081. <TD>Port C data direction register (doubles as IRQ mask register)</TD>
  1082. </TR>
  1083. <TR><TD>BYTE</TD>
  1084.  
  1085. <TD>CR</TD>
  1086. <TD>Control Register</TD>
  1087. </TR>
  1088. <TR><TD>BYTE</TD>
  1089.  
  1090. <TD>AIR</TD>
  1091. <TD>Active interrupt register</TD>
  1092. </TR>
  1093. <TR><TD>BYTE</TD>
  1094.  
  1095. <TD>STACK</TD>
  1096. <TD>Interrupt stack - the interrupt bits that are not (yet) served.</TD>
  1097. </TR>
  1098. <TR><TD>BYTE</TD>
  1099.  
  1100. <TD>CABSTATE</TD>
  1101. <TD>State of CA/CB pins.  Bit 7 = state of CA, Bit 6 = state of CB</TD>
  1102. </TR></TABLE>
  1103.  
  1104.  
  1105.  
  1106. <H4><A NAME="SEC124" HREF="vice_toc.html#TOC124">8.2.2.8  RIOT module</A></H4>
  1107.  
  1108. <P>
  1109. The RIOT 6532 is a chip with two I/O ports, some RAM and a Timer. 
  1110. The chip contains 128 byte RAM, but the RAM is not saved in the 
  1111. RIOT snapshot, but in the memory section.
  1112.  
  1113. </P>
  1114. <P>
  1115. <B>Warning:</B> This module is still under construction
  1116.  
  1117. </P>
  1118. <P>
  1119. Version numbers: Major 0, Minor 0.
  1120.  
  1121. </P>
  1122. <TABLE BORDER>
  1123.  
  1124. <TR><TD>Type</TD>
  1125.  
  1126. <TD>Name</TD>
  1127. <TD>Description</TD>
  1128. </TR>
  1129. <TR><TD>BYTE</TD>
  1130.  
  1131. <TD>ORA</TD>
  1132. <TD>Port A output register</TD>
  1133. </TR>
  1134. <TR><TD>BYTE</TD>
  1135.  
  1136. <TD>DDRA</TD>
  1137. <TD>Port A data direction register</TD>
  1138. </TR>
  1139. <TR><TD>BYTE</TD>
  1140.  
  1141. <TD>ORB</TD>
  1142. <TD>Port B output register</TD>
  1143. </TR>
  1144. <TR><TD>BYTE</TD>
  1145.  
  1146. <TD>DDRB</TD>
  1147. <TD>Port B data direction register</TD>
  1148. </TR>
  1149. <TR><TD>BYTE</TD>
  1150.  
  1151. <TD>EDGECTRL</TD>
  1152. <TD>Bit 0/1: A0/A1 address bits written to edgecontrol registers</TD>
  1153. </TR>
  1154. <TR><TD>BYTE</TD>
  1155.  
  1156. <TD>IRQFL</TD>
  1157. <TD>Bit 6/7: A6/A7 IRQ flag register. Bit 0: state of the IRQ line (0=inactive, 1=active)</TD>
  1158. </TR>
  1159. <TR><TD>BYTE</TD>
  1160.  
  1161. <TD>N</TD>
  1162. <TD>timer value</TD>
  1163. </TR>
  1164. <TR><TD>WORD</TD>
  1165.  
  1166. <TD>DIVIDER</TD>
  1167. <TD>Pre-scale divider value (1, 8, 64, or 1024)</TD>
  1168. </TR>
  1169. <TR><TD>WORD</TD>
  1170.  
  1171. <TD>REST</TD>
  1172. <TD>cycles since the last counter change</TD>
  1173. </TR>
  1174. <TR><TD>BYTE</TD>
  1175.  
  1176. <TD>IRQEN</TD>
  1177. <TD>Bit 0: 0= timer IRQ disabled, 1= timer IRQ enabled</TD>
  1178. </TR></TABLE>
  1179.  
  1180.  
  1181.  
  1182. <H4><A NAME="SEC125" HREF="vice_toc.html#TOC125">8.2.2.9  SID module</A></H4>
  1183.  
  1184. <P>
  1185. <B>Warning:</B> This module is still under construction.
  1186.  
  1187. </P>
  1188.  
  1189.  
  1190. <H4><A NAME="SEC126" HREF="vice_toc.html#TOC126">8.2.2.10  ACIA module</A></H4>
  1191.  
  1192. <P>
  1193. The ACIA 6551 is an RS232 interface chip.  VICE emulates RS232 connections
  1194. via <CODE>/dev/ttyS*</CODE> (Unix) or <CODE>COM:</CODE> (DOS/WIN - not yet?).
  1195. When saving a snapshot, those connections are of course lost.
  1196. The state of the ACIA however is restored if possible.  I.e. if a connection
  1197. is already open when restoring the snapshot, this connection is used
  1198. instead.  If no connection is open, a carrier/DTR drop is emulated.
  1199.  
  1200. </P>
  1201. <P>
  1202. Version numbers: Major 1, Minor 0.
  1203.  
  1204. </P>
  1205. <TABLE BORDER>
  1206.  
  1207. <TR><TD>Type</TD>
  1208.  
  1209. <TD>Name</TD>
  1210. <TD>Description</TD>
  1211. </TR>
  1212. <TR><TD>BYTE</TD>
  1213.  
  1214. <TD>TDR</TD>
  1215. <TD>Transmit Data Register</TD>
  1216. </TR>
  1217. <TR><TD>BYTE</TD>
  1218.  
  1219. <TD>RDR</TD>
  1220. <TD>Receiver Data Register</TD>
  1221. </TR>
  1222. <TR><TD>BYTE</TD>
  1223.  
  1224. <TD>SR</TD>
  1225. <TD>Status Register</TD>
  1226. </TR>
  1227. <TR><TD>BYTE</TD>
  1228.  
  1229. <TD>CMD</TD>
  1230. <TD>Command Register</TD>
  1231. </TR>
  1232. <TR><TD>BYTE</TD>
  1233.  
  1234. <TD>CTRL</TD>
  1235. <TD>Ctrl Register</TD>
  1236. </TR>
  1237. <TR><TD>BYTE</TD>
  1238.  
  1239. <TD>INTX</TD>
  1240. <TD>0 = no data to tx; 1 = Data is being transmitted; 2 = Data is being transmitted while data in TDR waiting to be put to internal transmit register</TD>
  1241. </TR>
  1242. <TR><TD>DWORD</TD>
  1243.  
  1244. <TD>TICKS</TD>
  1245. <TD>Clock ticks till the next TDR empty interrupt</TD>
  1246. </TR></TABLE>
  1247.  
  1248.  
  1249.  
  1250. <H4><A NAME="SEC127" HREF="vice_toc.html#TOC127">8.2.2.11  VIC-I module</A></H4>
  1251.  
  1252. <P>
  1253. <B>Warning:</B> This module is still under construction.
  1254.  
  1255. </P>
  1256.  
  1257.  
  1258. <H4><A NAME="SEC128" HREF="vice_toc.html#TOC128">8.2.2.12  VIC-II module</A></H4>
  1259.  
  1260. <P>
  1261. <B>Warning:</B> This module is still under construction.
  1262.  
  1263. </P>
  1264.  
  1265.  
  1266. <H4><A NAME="SEC129" HREF="vice_toc.html#TOC129">8.2.2.13  CRTC module</A></H4>
  1267.  
  1268. <P>
  1269. <B>Warning:</B> After VICE version 1.0 the CRTC emulation has improved
  1270. considerably. Especially it is now cycle exact. Therefore a lot more
  1271. variables must be saved. The snapshot module version jumped from
  1272. 0.0 to 1.0. Newer versions of VICE can read the old snapshots, but
  1273. older versions (1.0 and below) cannot read the new snapshots.
  1274.  
  1275. </P>
  1276. <P>
  1277. <B>Warning:</B> This module is still under construction.  Especially the
  1278. RASTERY and RASTERLINE values might be bogus.
  1279.  
  1280. </P>
  1281. <P>
  1282. Version numbers: Major 1, Minor 1.
  1283.  
  1284. </P>
  1285. <TABLE BORDER>
  1286.  
  1287. <TR><TD>Type</TD>
  1288.  
  1289. <TD>Name</TD>
  1290. <TD>Description</TD>
  1291. </TR>
  1292. <TR><TD></TD>
  1293.  
  1294. <TD></TD>
  1295. <TD>Hardware options</TD>
  1296. </TR>
  1297. <TR><TD>WORD</TD>
  1298.  
  1299. <TD>VADDR_MASK</TD>
  1300. <TD>Mask of the address bits valid when accessing the video memory</TD>
  1301. </TR>
  1302. <TR><TD>WORD</TD>
  1303.  
  1304. <TD>VADDR_CHARSWITCH</TD>
  1305. <TD>If one bit in the video address is used to switch the character generator, it is masked here.</TD>
  1306. </TR>
  1307. <TR><TD>WORD</TD>
  1308.  
  1309. <TD>VADDR_CHAROFFSET</TD>
  1310. <TD>The offset in characters in the character generator that CHARSWITCH switches.</TD>
  1311. </TR>
  1312. <TR><TD>WORD</TD>
  1313.  
  1314. <TD>VADDR_REVSWITCH</TD>
  1315. <TD>If one bit in the video address inverts the screen, it is masked here. </TD>
  1316. </TR>
  1317. <TR><TD>WORD</TD>
  1318.  
  1319. <TD>CHARGEN_MASK</TD>
  1320. <TD>size of character generator in byte - 1</TD>
  1321. </TR>
  1322. <TR><TD>WORD</TD>
  1323.  
  1324. <TD>CHARGEN_OFFSET</TD>
  1325. <TD>offset given by external circuitry</TD>
  1326. </TR>
  1327. <TR><TD>BYTE</TD>
  1328.  
  1329. <TD>HW_CURSOR</TD>
  1330. <TD>external hardware cursor circuitry enabled</TD>
  1331. </TR>
  1332. <TR><TD>BYTE</TD>
  1333.  
  1334. <TD>HW_COLS</TD>
  1335. <TD>number of displayed columns during one character clock cycle</TD>
  1336. </TR>
  1337. <TR><TD>BYTE</TD>
  1338.  
  1339. <TD>HW_BLANK</TD>
  1340. <TD>set if the hardware blank feature is available</TD>
  1341. </TR>
  1342. <TR><TD></TD>
  1343.  
  1344. <TD></TD>
  1345. <TD>CRTC register</TD>
  1346. </TR>
  1347. <TR><TD>20 BYTE</TD>
  1348.  
  1349. <TD>REGISTERS</TD>
  1350. <TD>register DUMP of the CRTC registers 0-19.</TD>
  1351. </TR>
  1352. <TR><TD></TD>
  1353.  
  1354. <TD></TD>
  1355. <TD>CRTC internal registers</TD>
  1356. </TR>
  1357. <TR><TD>BYTE</TD>
  1358.  
  1359. <TD>REGNO</TD>
  1360. <TD>The current index in the CRTC register file</TD>
  1361. </TR>
  1362. <TR><TD>BYTE</TD>
  1363.  
  1364. <TD>CHAR</TD>
  1365. <TD>The current cycle within the current rasterline</TD>
  1366. </TR>
  1367. <TR><TD>BYTE</TD>
  1368.  
  1369. <TD>CHARLINE</TD>
  1370. <TD>The current character line</TD>
  1371. </TR>
  1372. <TR><TD>BYTE</TD>
  1373.  
  1374. <TD>YCOUNTER</TD>
  1375. <TD>The current rasterline in the character</TD>
  1376. </TR>
  1377. <TR><TD>BYTE</TD>
  1378.  
  1379. <TD>CRSRCNT</TD>
  1380. <TD>Framecounter for the blinking cursor</TD>
  1381. </TR>
  1382. <TR><TD>BYTE</TD>
  1383.  
  1384. <TD>CRSRSTATE</TD>
  1385. <TD>if set the hardware cursor is visible</TD>
  1386. </TR>
  1387. <TR><TD>BYTE</TD>
  1388.  
  1389. <TD>CRSRLINES</TD>
  1390. <TD>set if ycounter is within the active cursor rasterlines for a char</TD>
  1391. </TR>
  1392. <TR><TD>WORD</TD>
  1393.  
  1394. <TD>CHARGEN_REL</TD>
  1395. <TD>relative base of currently used character generator in ROM (in byte)</TD>
  1396. </TR>
  1397. <TR><TD>WORD</TD>
  1398.  
  1399. <TD>SCREEN_REL</TD>
  1400. <TD>screen address to load the counter at the beginning of the next rasterline</TD>
  1401. </TR>
  1402. <TR><TD>WORD</TD>
  1403.  
  1404. <TD>VSYNC</TD>
  1405. <TD>number of rasterlines left within vsync; 0 = not in vsync</TD>
  1406. </TR>
  1407. <TR><TD>BYTE</TD>
  1408.  
  1409. <TD>VENABLE</TD>
  1410. <TD>vertical enable flipflop; 1= display, 0= blank.</TD>
  1411. </TR>
  1412. <TR><TD></TD>
  1413.  
  1414. <TD></TD>
  1415. <TD>(VICE-dependent?) variables</TD>
  1416. </TR>
  1417. <TR><TD>WORD</TD>
  1418.  
  1419. <TD>SCREEN_WIDTH</TD>
  1420. <TD>width of the current display window</TD>
  1421. </TR>
  1422. <TR><TD>WORD</TD>
  1423.  
  1424. <TD>SCREEN_HEIGHT</TD>
  1425. <TD>height of the current display window</TD>
  1426. </TR>
  1427. <TR><TD>WORD</TD>
  1428.  
  1429. <TD>SCREEN_XOFFSET</TD>
  1430. <TD>x position where the first character in a line starts in the window...</TD>
  1431. </TR>
  1432. <TR><TD>WORD</TD>
  1433.  
  1434. <TD>HJITTER</TD>
  1435. <TD>...but only after adding this jitter</TD>
  1436. </TR>
  1437. <TR><TD>WORD</TD>
  1438.  
  1439. <TD>SCREEN_YOFFSET</TD>
  1440. <TD>x position where the first character in a line starts in the window...</TD>
  1441. </TR>
  1442. <TR><TD>WORD</TD>
  1443.  
  1444. <TD>FRAMELINES</TD>
  1445. <TD>expected number of rasterlines for the current frame</TD>
  1446. </TR>
  1447. <TR><TD>WORD</TD>
  1448.  
  1449. <TD>CURRENT_LINE</TD>
  1450. <TD>current rasterline as seen from the CRTC</TD>
  1451. </TR>
  1452. <TR><TD></TD>
  1453.  
  1454. <TD></TD>
  1455. <TD>This value has been added in module version V1.1</TD>
  1456. </TR>
  1457. <TR><TD>BYTE</TD>
  1458.  
  1459. <TD>FLAG</TD>
  1460. <TD>Bit 0: If 1 then bit in VADDR_REVSWITCH must be set for reverse; if 0 then bit must be cleared for reverse.</TD>
  1461. </TR></TABLE>
  1462.  
  1463. <P>
  1464. Here is the reference for the previous CRTC snapshot module. It is outdated
  1465. and will not be read by this and later versions of VICE.
  1466.  
  1467. </P>
  1468. <P>
  1469. Version numbers: Major 0, Minor 0.
  1470.  
  1471. </P>
  1472. <TABLE BORDER>
  1473.  
  1474. <TR><TD>Type</TD>
  1475.  
  1476. <TD>Name</TD>
  1477. <TD>Description</TD>
  1478. </TR>
  1479. <TR><TD>BYTE</TD>
  1480.  
  1481. <TD>RASTERY</TD>
  1482. <TD>The number of clock cycles from rasterlines start</TD>
  1483. </TR>
  1484. <TR><TD>WORD</TD>
  1485.  
  1486. <TD>RASTERLINE</TD>
  1487. <TD>The current rasterline </TD>
  1488. </TR>
  1489. <TR><TD>WORD</TD>
  1490.  
  1491. <TD>ADDRMASK</TD>
  1492. <TD>The address mask valid for the CRTC.  All memory accesses are masked with this value</TD>
  1493. </TR>
  1494. <TR><TD>BYTE</TD>
  1495.  
  1496. <TD>HWFLAG</TD>
  1497. <TD>Bit 0: 1= hardware cursor available.  Bit 1: 1= number of columns is doubled by external hardware</TD>
  1498. </TR>
  1499. <TR><TD>20 BYTE</TD>
  1500.  
  1501. <TD>REGISTERS</TD>
  1502. <TD>register DUMP of the CRTC registers 0-19.</TD>
  1503. </TR>
  1504. <TR><TD>BYTE</TD>
  1505.  
  1506. <TD>CRSRSTATE</TD>
  1507. <TD>Hardware cursor: Bits 0-3: frame counter till next crsr line toggle. Bit 7: 1= cursor line active</TD>
  1508. </TR></TABLE>
  1509.  
  1510.  
  1511.  
  1512. <H4><A NAME="SEC130" HREF="vice_toc.html#TOC130">8.2.2.14  C64 memory module</A></H4>
  1513.  
  1514. <P>
  1515. The C64 memory module actually consists of two modules.  The "C64MEM" module
  1516. is mandatory and contains the RAM dump.  The "C64ROM" module is optional
  1517. and contains a dump of the ROM images.
  1518.  
  1519. </P>
  1520. <P>
  1521. The size of the C64 memory modules differs with each different memory
  1522. configuration. The RAM configuration is saved in the snapshot, and
  1523. restored when the snapshot is loaded. The attached cartridges are
  1524. <B>not yet(!)</B> saved and not yet restored upon load.
  1525.  
  1526. </P>
  1527. <P>
  1528. Version numbers: Major 0, Minor 0
  1529.  
  1530. </P>
  1531. <P>
  1532. <B>The C64MEM module</B>
  1533.  
  1534. </P>
  1535. <TABLE BORDER>
  1536.  
  1537. <TR><TD>Type</TD>
  1538.  
  1539. <TD>Name</TD>
  1540. <TD>Description</TD>
  1541. </TR>
  1542. <TR><TD>BYTE</TD>
  1543.  
  1544. <TD>CPUDATA</TD>
  1545. <TD>CPU port data byte</TD>
  1546. </TR>
  1547. <TR><TD>BYTE</TD>
  1548.  
  1549. <TD>CPUDIR</TD>
  1550. <TD>CPU port direction byte</TD>
  1551. </TR>
  1552. <TR><TD>BYTE</TD>
  1553.  
  1554. <TD>EXROM</TD>
  1555. <TD>state of the EXROM line (?)</TD>
  1556. </TR>
  1557. <TR><TD>BYTE</TD>
  1558.  
  1559. <TD>GAME</TD>
  1560. <TD>state of the GAME line (?)</TD>
  1561. </TR>
  1562. <TR><TD>ARRAY</TD>
  1563.  
  1564. <TD>RAM</TD>
  1565. <TD>64k RAM dump</TD>
  1566. </TR></TABLE>
  1567.  
  1568. <P>
  1569. <B>The C64ROM module</B>
  1570.  
  1571. </P>
  1572. <TABLE BORDER>
  1573.  
  1574. <TR><TD>Type</TD>
  1575.  
  1576. <TD>Name</TD>
  1577. <TD>Description</TD>
  1578. </TR>
  1579. <TR><TD>ARRAY</TD>
  1580.  
  1581. <TD>KERNAL</TD>
  1582. <TD>8k dump of the kernal ROM</TD>
  1583. </TR>
  1584. <TR><TD>ARRAY</TD>
  1585.  
  1586. <TD>BASIC</TD>
  1587. <TD>8k dump of the basic ROM</TD>
  1588. </TR>
  1589. <TR><TD>ARRAY</TD>
  1590.  
  1591. <TD>CHARGEN</TD>
  1592. <TD>4k dump of the chargen ROM</TD>
  1593. </TR></TABLE>
  1594.  
  1595.  
  1596.  
  1597. <H4><A NAME="SEC131" HREF="vice_toc.html#TOC131">8.2.2.15  C128 memory module</A></H4>
  1598.  
  1599. <P>
  1600. The C128 memory module actually consists of two modules.  The "C128MEM" module
  1601. is mandatory and contains the RAM dump.  The "C128ROM" module is optional
  1602. and contains a dump of the ROM images.
  1603.  
  1604. </P>
  1605. <P>
  1606. The size of the C128 memory modules differs with each different memory
  1607. configuration. The RAM configuration is saved in the snapshot, and
  1608. restored when the snapshot is loaded. The attached cartridges are
  1609. also restored upon load if they have been saved in the snapshot.
  1610.  
  1611. </P>
  1612. <P>
  1613. Version numbers: Major 0, Minor 0
  1614.  
  1615. </P>
  1616. <P>
  1617. <B>The C128MEM module</B>
  1618.  
  1619. </P>
  1620. <TABLE BORDER>
  1621.  
  1622. <TR><TD>Type</TD>
  1623.  
  1624. <TD>Name</TD>
  1625. <TD>Description</TD>
  1626. </TR>
  1627. <TR><TD>12 BYTE</TD>
  1628.  
  1629. <TD>MMU</TD>
  1630. <TD>dump of the 12 MMU registers</TD>
  1631. </TR>
  1632. <TR><TD>ARRAY</TD>
  1633.  
  1634. <TD>RAM</TD>
  1635. <TD>128k RAM dump banks 0 and 1</TD>
  1636. </TR></TABLE>
  1637.  
  1638. <P>
  1639. <B>The C128ROM module</B>
  1640.  
  1641. </P>
  1642. <TABLE BORDER>
  1643.  
  1644. <TR><TD>Type</TD>
  1645.  
  1646. <TD>Name</TD>
  1647. <TD>Description</TD>
  1648. </TR>
  1649. <TR><TD>ARRAY</TD>
  1650.  
  1651. <TD>KERNAL</TD>
  1652. <TD>8k dump of the kernal ROM</TD>
  1653. </TR>
  1654. <TR><TD>ARRAY</TD>
  1655.  
  1656. <TD>BASIC</TD>
  1657. <TD>32k dump of the basic ROM</TD>
  1658. </TR>
  1659. <TR><TD>ARRAY</TD>
  1660.  
  1661. <TD>EDITOR</TD>
  1662. <TD>4k dump of the editor ROM</TD>
  1663. </TR>
  1664. <TR><TD>ARRAY</TD>
  1665.  
  1666. <TD>4k CHARGEN</TD>
  1667. <TD>dump of the chargen ROM</TD>
  1668. </TR></TABLE>
  1669.  
  1670.  
  1671.  
  1672. <H4><A NAME="SEC132" HREF="vice_toc.html#TOC132">8.2.2.16  VIC20 memory module</A></H4>
  1673.  
  1674. <P>
  1675. The VIC20 memory module actually consists of two modules.  The "VIC20MEM" module
  1676. is mandatory and contains the RAM dump.  The "VIC20ROM" module is optional
  1677. and contains a dump of the ROM images.
  1678.  
  1679. </P>
  1680. <P>
  1681. The size of the VIC20 memory modules differs with each different memory
  1682. configuration. The RAM configuration is saved in the snapshot, and
  1683. restored when the snapshot is loaded. The attached cartridges are
  1684. also restored upon load if they have been saved in the snapshot.
  1685.  
  1686. </P>
  1687. <P>
  1688. <B>The VIC20MEM module</B>
  1689.  
  1690. </P>
  1691. <P>
  1692. Version numbers: Major 1, Minor 0
  1693.  
  1694. </P>
  1695. <TABLE BORDER>
  1696.  
  1697. <TR><TD>Type</TD>
  1698.  
  1699. <TD>Name</TD>
  1700. <TD>Description</TD>
  1701. </TR>
  1702. <TR><TD>BYTE</TD>
  1703.  
  1704. <TD>CONFIG</TD>
  1705. <TD>Configuration register.  Bits 0,1,2,3,5 reflect if the corresponding memory block is RAM (bit=1) or not (bit=0).</TD>
  1706. </TR>
  1707. <TR><TD>ARRAY</TD>
  1708.  
  1709. <TD>RAM0</TD>
  1710. <TD>1k RAM dump $0000-$03ff</TD>
  1711. </TR>
  1712. <TR><TD>ARRAY</TD>
  1713.  
  1714. <TD>RAM1</TD>
  1715. <TD>4k RAM dump $1000-$1fff</TD>
  1716. </TR>
  1717. <TR><TD>ARRAY</TD>
  1718.  
  1719. <TD>COLORRAM</TD>
  1720. <TD>2k Color RAM, $9400-$9bff</TD>
  1721. </TR>
  1722. <TR><TD>ARRAY</TD>
  1723.  
  1724. <TD>BLK0</TD>
  1725. <TD>if CONFIG & 1 then: 3k RAM dump $0400-$0fff</TD>
  1726. </TR>
  1727. <TR><TD>ARRAY</TD>
  1728.  
  1729. <TD>BLK1</TD>
  1730. <TD>if CONFIG & 2 then: 8k RAM dump $2000-$3fff</TD>
  1731. </TR>
  1732. <TR><TD>ARRAY</TD>
  1733.  
  1734. <TD>BLK2</TD>
  1735. <TD>if CONFIG & 4 then: 8k RAM dump $4000-$5fff</TD>
  1736. </TR>
  1737. <TR><TD>ARRAY</TD>
  1738.  
  1739. <TD>BLK3</TD>
  1740. <TD>if CONFIG & 8 then: 8k RAM dump $6000-$7fff</TD>
  1741. </TR>
  1742. <TR><TD>ARRAY</TD>
  1743.  
  1744. <TD>BLK5</TD>
  1745. <TD>if CONFIG & 32 then: 8k RAM dump $a000-$bfff</TD>
  1746. </TR></TABLE>
  1747.  
  1748. <P>
  1749. <B>The VIC20ROM module</B>
  1750.  
  1751. </P>
  1752. <P>
  1753. Version numbers: Major 1, Minor 1
  1754.  
  1755. </P>
  1756. <TABLE BORDER>
  1757.  
  1758. <TR><TD>Type</TD>
  1759.  
  1760. <TD>Name</TD>
  1761. <TD>Description</TD>
  1762. </TR>
  1763. <TR><TD>BYTE</TD>
  1764.  
  1765. <TD>CONFIG</TD>
  1766. <TD>Bit 0: 1= ROM block $2*** enabled.  Bit 1: 1= ROM block $3*** enabled. Bit 2: 1= ROM block $4*** enabled.  Bit 3: 1= ROM block $5*** enabled. Bit 4: 1= ROM block $6*** enabled. Bit 5: 1= ROM block $7*** enabled. Bit 6: 1= ROM block $A*** enabled. Bit 7: 1= ROM block $B*** enabled.</TD>
  1767. </TR>
  1768. <TR><TD>ARRAY</TD>
  1769.  
  1770. <TD>KERNAL</TD>
  1771. <TD>8k KERNAL ROM image $e000-$ffff</TD>
  1772. </TR>
  1773. <TR><TD>ARRAY</TD>
  1774.  
  1775. <TD>BASIC</TD>
  1776. <TD>16k BASIC ROM image $c000-$dfff</TD>
  1777. </TR>
  1778. <TR><TD>ARRAY</TD>
  1779.  
  1780. <TD>CHARGEN</TD>
  1781. <TD>4k CHARGEN ROM image</TD>
  1782. </TR>
  1783. <TR><TD>ARRAY</TD>
  1784.  
  1785. <TD>BLK1A</TD>
  1786. <TD>4k ROM image $2*** (if CONFIG & 1)</TD>
  1787. </TR>
  1788. <TR><TD>ARRAY</TD>
  1789.  
  1790. <TD>BLK1B</TD>
  1791. <TD>4k ROM image $3*** (if CONFIG & 2)</TD>
  1792. </TR>
  1793. <TR><TD>ARRAY</TD>
  1794.  
  1795. <TD>BLK3A</TD>
  1796. <TD>4k ROM image $6*** (if CONFIG & 16)</TD>
  1797. </TR>
  1798. <TR><TD>ARRAY</TD>
  1799.  
  1800. <TD>BLK3B</TD>
  1801. <TD>4k ROM image $7*** (if CONFIG & 32)</TD>
  1802. </TR>
  1803. <TR><TD>ARRAY</TD>
  1804.  
  1805. <TD>BLK5A</TD>
  1806. <TD>4k ROM image $A*** (if CONFIG & 64)</TD>
  1807. </TR>
  1808. <TR><TD>ARRAY</TD>
  1809.  
  1810. <TD>BLK5B</TD>
  1811. <TD>4k ROM image $B*** (if CONFIG & 128)</TD>
  1812. </TR>
  1813. <TR><TD>ARRAY</TD>
  1814.  
  1815. <TD>BLK2A</TD>
  1816. <TD>4k ROM image $4*** (if CONFIG & 4; added in V1.1)</TD>
  1817. </TR>
  1818. <TR><TD>ARRAY</TD>
  1819.  
  1820. <TD>BLK2B</TD>
  1821. <TD>4k ROM image $5*** (if CONFIG & 8; added in V1.1)</TD>
  1822. </TR></TABLE>
  1823.  
  1824.  
  1825.  
  1826. <H4><A NAME="SEC133" HREF="vice_toc.html#TOC133">8.2.2.17  PET memory module</A></H4>
  1827.  
  1828. <P>
  1829. The PET memory module actually consists of two modules.  The "PETMEM" module
  1830. is mandatory and contains the RAM dump.  The "PETROM" module is optional
  1831. and contains a dump of the ROM images.
  1832.  
  1833. </P>
  1834. <P>
  1835. The size of the PET memory modules differs with each different memory
  1836. configuration.  The RAM configuration is saved in the snapshot, and
  1837. restored when the snapshot is loaded.
  1838.  
  1839. </P>
  1840. <P>
  1841. <B>The PETMEM module</B>
  1842.  
  1843. </P>
  1844. <P>
  1845. Version numbers: Major 1, Minor 2
  1846.  
  1847. </P>
  1848. <TABLE BORDER>
  1849.  
  1850. <TR><TD>Type</TD>
  1851.  
  1852. <TD>Name</TD>
  1853. <TD>Description</TD>
  1854. </TR>
  1855. <TR><TD>BYTE</TD>
  1856.  
  1857. <TD>CONFIG</TD>
  1858. <TD>Configuration value. Bits 0-3: 0= 40 col PET without CRTC; 1= 40 col PET with CRTC; 2 = 80 col PET (with CRTC); 3= SuperPET; 4= 8096; 5= 8296. Bit 6: 1= RAM at $9***. Bit 7: 1= RAM at $A***.</TD>
  1859. </TR>
  1860. <TR><TD>BYTE</TD>
  1861.  
  1862. <TD>KEYBOARD</TD>
  1863. <TD>Keyboard type. 0= UK business; 1= Graphics; 2= German business</TD>
  1864. </TR>
  1865. <TR><TD>BYTE</TD>
  1866.  
  1867. <TD>MEMSIZE</TD>
  1868. <TD>memory size of low 32k in k (possible values 4, 8, 16, 32)</TD>
  1869. </TR>
  1870. <TR><TD>BYTE</TD>
  1871.  
  1872. <TD>CONF8X96</TD>
  1873. <TD>Value of the 8x96 configuration register</TD>
  1874. </TR>
  1875. <TR><TD>BYTE</TD>
  1876.  
  1877. <TD>SUPERPET</TD>
  1878. <TD>SuperPET config. Bit 0: 1= $9*** RAM enabled. Bit 1: 1= RAM write protected. Bit 2: 1= CTRL register write protected. Bit 3: 0= DIAG pin active. Bits 4-7: RAM block in use. </TD>
  1879. </TR>
  1880. <TR><TD>ARRAY</TD>
  1881.  
  1882. <TD>RAM</TD>
  1883. <TD>4-32k RAM (not 8296, size depends on MEMSIZE)</TD>
  1884. </TR>
  1885. <TR><TD>ARRAY</TD>
  1886.  
  1887. <TD>VRAM</TD>
  1888. <TD>2/4k RAM (not 8296, size depends on CONFIG)</TD>
  1889. </TR>
  1890. <TR><TD>ARRAY</TD>
  1891.  
  1892. <TD>EXTRAM</TD>
  1893. <TD>64k expansion RAM (SuperPET and 8096 only)</TD>
  1894. </TR>
  1895. <TR><TD>ARRAY</TD>
  1896.  
  1897. <TD>RAM</TD>
  1898. <TD>128k RAM (8296 only)</TD>
  1899. </TR>
  1900. <TR><TD>--</TD>
  1901.  
  1902. <TD>--</TD>
  1903. <TD>The following item has been added in V1.1</TD>
  1904. </TR>
  1905. <TR><TD>BYTE</TD>
  1906.  
  1907. <TD>POSITIONAL</TD>
  1908. <TD>bit 0=0 = symbolic keyboard mapping, bit 0=1 = positional mapping.</TD>
  1909. </TR>
  1910. <TR><TD>--</TD>
  1911.  
  1912. <TD>--</TD>
  1913. <TD>The following item has been added in V1.1</TD>
  1914. </TR>
  1915. <TR><TD>BYTE</TD>
  1916.  
  1917. <TD>EOIBLANK</TD>
  1918. <TD>bit 0=0 = EOI does not blank screen, bit 0=1 = EOI blanks screen.</TD>
  1919. </TR></TABLE>
  1920.  
  1921. <P>
  1922. The last item has been added in PETMEM snapshot version 1.1. It is
  1923. ignored by earlier restore routines (V1.0) and the V1.1 restore routines
  1924. do not change the current setting when reading a V1.0 snapshot.
  1925.  
  1926. </P>
  1927. <P>
  1928. In V1.2 the new EOIBLANK variable has been added. This implements
  1929. the "blank screen on EOI" feature that was previously linked to a wrong 
  1930. resource.
  1931.  
  1932. </P>
  1933. <P>
  1934. <B>The PETROM module</B>
  1935.  
  1936. </P>
  1937. <P>
  1938. Version numbers: Major 1, Minor 0
  1939.  
  1940. </P>
  1941. <TABLE BORDER>
  1942.  
  1943. <TR><TD>Type</TD>
  1944.  
  1945. <TD>Name</TD>
  1946. <TD>Description</TD>
  1947. </TR>
  1948. <TR><TD>BYTE</TD>
  1949.  
  1950. <TD>CONFIG</TD>
  1951. <TD>Bit 0: 1= $9*** ROM included. Bit 1: 1= $A*** ROM included. Bit 2: 1= $B*** ROM included. Bit 3: 1= $e900-$efff ROM included</TD>
  1952. </TR>
  1953. <TR><TD>ARRAY</TD>
  1954.  
  1955. <TD>KERNAL</TD>
  1956. <TD>4k KERNAL ROM image $f000-$ffff</TD>
  1957. </TR>
  1958. <TR><TD>ARRAY</TD>
  1959.  
  1960. <TD>EDITOR</TD>
  1961. <TD>2k EDITOR ROM image $e000-$e7ff</TD>
  1962. </TR>
  1963. <TR><TD>ARRAY</TD>
  1964.  
  1965. <TD>CHARGEN</TD>
  1966. <TD>2k CHARGEN ROM image</TD>
  1967. </TR>
  1968. <TR><TD>ARRAY</TD>
  1969.  
  1970. <TD>ROM9</TD>
  1971. <TD>4k $9*** ROM image (if CONFIG & 1)</TD>
  1972. </TR>
  1973. <TR><TD>ARRAY</TD>
  1974.  
  1975. <TD>ROMA</TD>
  1976. <TD>4k $A*** ROM image (if CONFIG & 2)</TD>
  1977. </TR>
  1978. <TR><TD>ARRAY</TD>
  1979.  
  1980. <TD>ROMB</TD>
  1981. <TD>4k $B*** ROM image (if CONFIG & 4)</TD>
  1982. </TR>
  1983. <TR><TD>ARRAY</TD>
  1984.  
  1985. <TD>ROMC</TD>
  1986. <TD>4k $C*** ROM image  </TD>
  1987. </TR>
  1988. <TR><TD>ARRAY</TD>
  1989.  
  1990. <TD>ROMD</TD>
  1991. <TD>4k $D*** ROM image</TD>
  1992. </TR>
  1993. <TR><TD>ARRAY</TD>
  1994.  
  1995. <TD>ROME9</TD>
  1996. <TD>7 blocks $e900-$efff ROM image (if CONFIG & 8)</TD>
  1997. </TR></TABLE>
  1998.  
  1999.  
  2000.  
  2001. <H4><A NAME="SEC134" HREF="vice_toc.html#TOC134">8.2.2.18  CBM-II memory module</A></H4>
  2002.  
  2003. <P>
  2004. The CBM-II memory module actually consists of two modules.  The
  2005. "CBM2MEM" module is mandatory and contains the RAM dump.  The "CBM2ROM"
  2006. module is optional and contains a dump of the ROM images.
  2007.  
  2008. </P>
  2009. <P>
  2010. The size of the CBM-II memory modules differs with each different memory
  2011. configuration.  The RAM configuration is saved in the snapshot, and
  2012. restored when the snapshot is loaded.
  2013.  
  2014. </P>
  2015. <P>
  2016. Version numbers: Major 1, Minor 0
  2017.  
  2018. </P>
  2019. <P>
  2020. <B>The CBM2MEM module</B>
  2021.  
  2022. </P>
  2023. <TABLE BORDER>
  2024.  
  2025. <TR><TD>Type</TD>
  2026.  
  2027. <TD>Name</TD>
  2028. <TD>Description</TD>
  2029. </TR>
  2030. <TR><TD>UBYTE</TD>
  2031.  
  2032. <TD>MEMSIZE</TD>
  2033. <TD>Memory size in 128k blocks (1=128k, 2=256k, 4=512k, 8=1024k)</TD>
  2034. </TR>
  2035. <TR><TD>UBYTE</TD>
  2036.  
  2037. <TD>CONFIG</TD>
  2038. <TD>Bit 0 = $f0800-$f0fff RAM, Bit 1 = $f1000-$f1fff RAM, Bit 2 = $f2000-$f3fff RAM, Bit 3 = $f4000-$f5fff RAM, Bit 4 = $f6000-$f7fff RAM, Bit 5 = $fc000-$fcfff RAM, Bit 6 = is a C500</TD>
  2039. </TR>
  2040. <TR><TD>UBYTE</TD>
  2041.  
  2042. <TD>HWCONFIG</TD>
  2043. <TD>Bit 0/1: model line configuration</TD>
  2044. </TR>
  2045. <TR><TD>UBYTE</TD>
  2046.  
  2047. <TD>EXECBANK</TD>
  2048. <TD>CPUs execution bank register</TD>
  2049. </TR>
  2050. <TR><TD>UBYTE</TD>
  2051.  
  2052. <TD>INDBANK</TD>
  2053. <TD>CPUs indirection bank register</TD>
  2054. </TR>
  2055. <TR><TD>ARRAY</TD>
  2056.  
  2057. <TD>SYSRAM</TD>
  2058. <TD>2k system RAM $f0000-$f07ff</TD>
  2059. </TR>
  2060. <TR><TD>ARRAY</TD>
  2061.  
  2062. <TD>VIDEO</TD>
  2063. <TD>2k video RAM $fd000-$fd7ff</TD>
  2064. </TR>
  2065. <TR><TD>ARRAY</TD>
  2066.  
  2067. <TD>RAM</TD>
  2068. <TD>RAM dump, size according to MEMSIZE</TD>
  2069. </TR>
  2070. <TR><TD>ARRAY</TD>
  2071.  
  2072. <TD>RAM08</TD>
  2073. <TD>if memsize < 1M and CONFIG & 1 : 2k RAM $f0800-$f0fff</TD>
  2074. </TR>
  2075. <TR><TD>ARRAY</TD>
  2076.  
  2077. <TD>RAM1</TD>
  2078. <TD>if memsize < 1M and CONFIG & 2 : 4k RAM $f1000-$f1fff</TD>
  2079. </TR>
  2080. <TR><TD>ARRAY</TD>
  2081.  
  2082. <TD>RAM2</TD>
  2083. <TD>if memsize < 1M and CONFIG & 4 : 8k RAM $f2000-$f3fff</TD>
  2084. </TR>
  2085. <TR><TD>ARRAY</TD>
  2086.  
  2087. <TD>RAM4</TD>
  2088. <TD>if memsize < 1M and CONFIG & 8 : 8k RAM $f4000-$f5fff</TD>
  2089. </TR>
  2090. <TR><TD>ARRAY</TD>
  2091.  
  2092. <TD>RAM6</TD>
  2093. <TD>if memsize < 1M and CONFIG & 16 : 8k RAM $f6000-$f7fff</TD>
  2094. </TR>
  2095. <TR><TD>ARRAY</TD>
  2096.  
  2097. <TD>RAMC</TD>
  2098. <TD>if memsize < 1M and CONFIG & 32 : 4k RAM $fc000-$fcfff</TD>
  2099. </TR></TABLE>
  2100.  
  2101. <P>
  2102. The RAM* arrays are only saved if the RAM itself is less than 1M.
  2103. If the memory size is 1M then those areas are taken from the
  2104. bank 15 area of the normal RAM.
  2105.  
  2106. </P>
  2107. <P>
  2108. The memory array starts at $10000 if the memory size is less than 512k,
  2109. or at $00000 if 512k or more. In case of a C510, then the memory array
  2110. also always starts at $00000.
  2111.  
  2112. </P>
  2113. <P>
  2114. <B>The CBM2ROM module</B>
  2115.  
  2116. </P>
  2117. <TABLE BORDER>
  2118.  
  2119. <TR><TD>Type</TD>
  2120.  
  2121. <TD>Name</TD>
  2122. <TD>Description</TD>
  2123. </TR>
  2124. <TR><TD>UBYTE</TD>
  2125.  
  2126. <TD>CONFIG</TD>
  2127. <TD>Bit 1: 1= $1*** ROM image included. Bit 2: 1= $2000-$3fff ROM image included. Bit 3: 1= $4000-$5fff ROM image included. Bit 4: 1= $6000-$7fff ROM image included. Bit 5: 1= chargen ROM is VIC-II chargen, 0= CRTC chargen.</TD>
  2128. </TR>
  2129. <TR><TD>ARRAY</TD>
  2130.  
  2131. <TD>KERNAL</TD>
  2132. <TD>8 KERNAL ROM image ($e000-$efff)</TD>
  2133. </TR>
  2134. <TR><TD>ARRAY</TD>
  2135.  
  2136. <TD>BASIC</TD>
  2137. <TD>BASIC ROM image ($8000-$bfff)</TD>
  2138. </TR>
  2139. <TR><TD>ARRAY</TD>
  2140.  
  2141. <TD>CHARGEN</TD>
  2142. <TD>4k CHARGEN ROM image</TD>
  2143. </TR>
  2144. <TR><TD>ARRAY</TD>
  2145.  
  2146. <TD>ROM1</TD>
  2147. <TD>4k cartridge ROM image for $1*** (if CONFIG & 2)</TD>
  2148. </TR>
  2149. <TR><TD>ARRAY</TD>
  2150.  
  2151. <TD>ROM2</TD>
  2152. <TD>8k cartridge ROM image for $2000-$3fff (if CONFIG & 4)</TD>
  2153. </TR>
  2154. <TR><TD>ARRAY</TD>
  2155.  
  2156. <TD>ROM4</TD>
  2157. <TD>8k cartridge ROM image for $4000-$5fff (if CONFIG & 8)</TD>
  2158. </TR>
  2159. <TR><TD>ARRAY</TD>
  2160.  
  2161. <TD>ROM6</TD>
  2162. <TD>8k cartridge ROM image for $6000-$7fff (if CONFIG & 16)</TD>
  2163. </TR></TABLE>
  2164.  
  2165.  
  2166.  
  2167. <H4><A NAME="SEC135" HREF="vice_toc.html#TOC135">8.2.2.19  C500 data module</A></H4>
  2168.  
  2169. <P>
  2170. The C500 data module contains simple state information not already saved
  2171. in the other modules.
  2172.  
  2173. </P>
  2174. <P>
  2175. Version numbers: Major 0, Minor 0
  2176.  
  2177. </P>
  2178. <P>
  2179. <B>The C500DATA module</B>
  2180.  
  2181. </P>
  2182. <TABLE BORDER>
  2183.  
  2184. <TR><TD>Type</TD>
  2185.  
  2186. <TD>Name</TD>
  2187. <TD>Description</TD>
  2188. </TR>
  2189. <TR><TD>DWORD</TD>
  2190.  
  2191. <TD>IRQCLK</TD>
  2192. <TD>CPU clock ticks till next 50Hz IRQ</TD>
  2193. </TR></TABLE>
  2194.  
  2195. <P><HR><P>
  2196. Go to the <A HREF="vice_1.html">first</A>, <A HREF="vice_7.html">previous</A>, <A HREF="vice_9.html">next</A>, <A HREF="vice_16.html">last</A> section, <A HREF="vice_toc.html">table of contents</A>.
  2197. </BODY>
  2198. </HTML>
  2199.